<?php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

/**
 *   log日志
 *
 **/
$app->configureMonologUsing( function (Monolog\Logger $monolog) {

    $appName = env('APP_NAME','');
    $filename = "/home/aixin/logs/application/{$appName}/{$appName}.log";


    $handler = new Monolog\Handler\RotatingFileHandler($filename, Monolog\Logger::DEBUG);
    $log = ( new App\Common\Tool\AixinLog())->getLog();


    $handler->setFormatter(
        new Monolog\Formatter\LineFormatter($log."[%level_name%] %message% \n", 'i:s', true, true)
    );

    $monolog->pushHandler($handler);
});



/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/

return $app;
